package com.sh.rbac.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sh.rbac.domain.dto.job.JobQueryDTO;
import com.sh.rbac.domain.dto.job.JobSaveDTO;
import com.sh.rbac.domain.dto.job.JobUpdateDTO;
import com.sh.rbac.domain.entity.Job;
import com.sh.rbac.domain.vo.job.JobVO;

/**
 * @author lucky
 * @description 针对表【sys_job(定时任务表)】的数据库操作Service
 * @createDate 2024-08-05 17:31:34
 */
public interface JobService extends IService<Job> {

    /**
     * 执行一次任务
     *
     * @param id 任务ID
     * @return 是否执行成功
     */
    Boolean runJob(Long id);

    /**
     * 分页查询任务列表
     *
     * @param current     当前页
     * @param limit       每页数量
     * @param jobQueryDTO 任务查询数据传输对象
     * @return 分页查询结果
     */
    Page<JobVO> getPage(Long current, Long limit, JobQueryDTO jobQueryDTO);

    /**
     * 保存任务
     *
     * @param jobSaveDTO 任务保存数据传输对象
     * @return 是否保存成功
     */
    Boolean save(JobSaveDTO jobSaveDTO);

    /**
     * 更新任务
     *
     * @param jobUpdateDTO 任务更新数据传输对象
     * @return 是否更新成功
     */
    Boolean updateById(JobUpdateDTO jobUpdateDTO);

    /**
     * 启动任务
     *
     * @param id 任务ID
     * @return 是否启动成功
     */
    Boolean startJob(Long id);

    /**
     * 暂停任务
     *
     * @param id 任务ID
     * @return 是否暂停成功
     */
    Boolean pauseJob(Long id);
}
